package igrupobbva.pe.sistemareniec.actions;

/**
 * Nombre : LogueoAction.java 
 * Versi�n : 1 
 * Creaci�n : 14/03/2008 
 * @author: Orlando Pihue Montoya 
 * Usuario : P020912 
 * Finalidad : Validar Logueo de Usuario 
 * Modificacion: < < fecha de modificaci�n>> 
 * Autor : < <quien actualizo el archivo>> 
 * Usuario : < <c�digo de usuario modificador>>
 * Detalle : < <descripci�n de la modificaci�n>>
 */


import igrupobbva.pe.sistemareniec.forms.LogueoForm;
import igrupobbva.pe.sistemareniec.util.ParametroUtil;

import java.sql.Connection;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.springframework.beans.factory.annotation.Autowired;

import com.grupobbva.bc.per.tele.ldap.directorio.IILDPeUsuario;
import com.grupobbva.iici.serializable.Menu;
import com.grupobbva.iici.serializable.PermisoPerfil;
import com.grupobbva.iici.service.CorporativaService;
import com.grupobbva.iici.service.PerfilService;
import com.grupobbva.iici.util.ConstantesUtil;
import com.grupobbva.pe.SIR.ents.header.RequestHeader;
import com.ibm.www.operations.Cabecera;

public class LogueoAction extends DispatchAction {
	static Logger logger = Logger.getLogger(LogueoAction.class.getName());
	
	@Autowired
	CorporativaService corporativaService;
	
	@Autowired
	PerfilService perfilService;

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
	
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward(); // return value
		LogueoForm logueoForm = (LogueoForm) form;
		Vector listMenu = null;
		PermisoPerfil permisoPerfil = null;
		forward = mapping.findForward("ok");		
		IILDPeUsuario user = null;
	
		String usuario = "";	
		String password = "";
		String nc = "";
		String nOf = "";
		
		request.setAttribute("flagLogueo", "1");
		try {	
		
				usuario = logueoForm.getUsuario().toUpperCase();
				password = logueoForm.getPassword().toUpperCase();
				
				user = IILDPeUsuario.recuperarUsuario(usuario);
				request.getSession().setAttribute("user", user);
			
				if ( password.equals("SPCC")){
					String codOficina = user.getBancoOficina().getCodigo();
					//String codOficina = "0925";
					request.getSession().setAttribute("codOficina", codOficina);
						request.getSession().setAttribute("desOficina", user.getBancoOficina().getDescripcion());
					request.getSession().setAttribute("registro", usuario);
					
					request.getSession().setAttribute(
							"nombre",
							user.getNombre() + " " + user.getApellido1() + " "
									+ user.getApellido2());				
					try
					{
						request.getSession().setAttribute("log",corporativaService.obtenerPorCodigo(ConstantesUtil.LOG).getValor1());
						request.getSession().setAttribute("txt",corporativaService.obtenerPorCodigo(ConstantesUtil.TXT).getValor1());	
						int root=corporativaService.obtenerPorCodigo(ConstantesUtil.ROOT).getValor1().indexOf(usuario);
						
						request.getSession().setAttribute("root",String.valueOf(root));
					}
					catch (Exception e)
					{
						errors.add("name", new ActionError("id"));
						}
					String cis=corporativaService.obtenerPorCodigo(ConstantesUtil.CIS).getValor1();
					permisoPerfil = perfilService.obtenerPermisoPerfilxTipAccxValorRCP(usuario, user
							.getCargo().getCodigo(), user.getBancoOficina().getCodigo());					
				
					//TODO [MGLHPM]						
					ParametroUtil parametroUtil = ParametroUtil.getInstance();					
					
					RequestHeader cabecera2 = new RequestHeader();
					cabecera2.setCanal(parametroUtil.getValue("canal"));
					cabecera2.setCodigoAplicacion(parametroUtil.getValue("codigoAplicacion"));
					cabecera2.setIdEmpresa(parametroUtil.getValue("idEmpresa"));
					cabecera2.setUsuario( StringUtils.trimToEmpty(usuario) );
					//cabecera2.setCodigoInterfaz(parametroUtil.getValue("codigoAplicacion"));
					//cabecera2.setFechaHoraEnvio("01/01/2010 10:20:10");
					//cabecera2.setIdTransaccion("IDTRAN");
					
					request.getSession().setAttribute("cabecera2", cabecera2);
					
					/**Cabecera:: **/
					Cabecera cabecera=new Cabecera() ;
					cabecera.setVersion("0001");
					cabecera.setLongCabecera((Integer.parseInt("0128")));
					cabecera.setTipoServicio("000");
					cabecera.setLongTotalTrama((Integer.parseInt("000000143")));
					cabecera.setFragmentacion("                      ");
					cabecera.setTTL((Integer.parseInt("000000000")));
					cabecera.setTipoConsulta("");
					cabecera.setCaracVerificacion("RENIECPERURENIEC");
					cabecera.setCodInstSolicitante(ConstantesUtil.completarSpace(cis.trim(),10));
					cabecera.setCodServReniec("RENIEC001 ");
					cabecera.setAgenciaInstSolic("Agencia1  ");
				    cabecera.setUsuarioFinalInstSol("Usuario1  ");
					cabecera.setHostFinalInstSol("Pc1       ");
					cabecera.setReservado("          ");
					
					request.getSession().setAttribute("cabecera", cabecera);
				
					if (permisoPerfil != null) {
						
						request.getSession().setAttribute("acceso",
								permisoPerfil.getCodPerfil());
						System.out.println("ver :" +  permisoPerfil
								.getCodPerfil() ); 
						listMenu = perfilService.obtenerCodigoPerfil(permisoPerfil
								.getCodPerfil());
					
						request.getSession().setAttribute("listaAccesoMenu", listMenu);
						for(int i=0; i<listMenu.size(); i++){
							Menu m = new Menu();
							System.out.println("link :" +((Menu)listMenu.get(i)).getLink());
						
						}
					} else {	
						System.out.println("sale error");
						request.setAttribute("flagLogueo", "1");
						forward = mapping.findForward("login");				
						request.setAttribute("txtError", "Usuario no Tiene Permiso Para acceder al Sistema");
					}
			} else {
				request.setAttribute("flagLogueo", "1");
				forward = mapping.findForward("login");				
				request.setAttribute("txtError", "Usuario no Existe / Password Invalido");
			}

		} catch (Exception e) {
			errors.add("name", new ActionError("id"));
			forward = mapping.findForward("login");
			e.printStackTrace();
		}
		System.out.println("FORWARD:: "+forward);
		return (forward);

	}
}
